There is, and will continue to be, advances and changes in how enterprises conduct business. Whether theses advances and changes occur through growing competition and globalization, mergers and acquisition, or a revamping of business models, the key for success will often depend on how quickly the enterprise's information technology (IT) organization can adapt to evolving business needs. Therefore, a major challenge to these enterprises is how they handle these changes from an IT standpoint.
For IT organizations to enable business agility, they must ensure that enterprise applications are not only high-performance business engines driving efficiencies, but also that they become flexible building blocks of future business systems. One solution to achieve this goal is the use of a Service Oriented Architecture (SOA). SOA refers to a software architectural framework that encourages the creation of loosely coupled services that communicate and pass information between the applications or modules. An implementation example of an SOA is the Enterprise Service Architecture (ESA) developed by SAP AG of Walldorf, Germany. In particular, the ESA is implemented through NetWeaver, an integration and application platform, also developed by SAP AG. Other examples of SOA enabling platforms are NET developed by Microsoft and Web Sphere developed by IBM.
Specific examples of the loosely coupled services used within an SOA are services. A service, such as a Web service, represents a self-contained, self-describing piece of application functionality that can be found and accessed by other applications. A service is self contained, because the application using the service does not have to depend on anything other than the service itself, and self-describing, because all the information on how to use the service can be obtained from the service itself. The descriptions are centrally stored and accessible through standard mechanisms to all applications that would like to invoke the service.
Because services are generally granular in nature, services may be aggregated into enterprise services, which provide more meaningful building blocks for the task of automating enterprise-scale business scenarios. Enterprise services allow IT organizations to efficiently develop composite applications, defined as applications that compose functionality and information from existing systems to support new business processes or scenarios. Enterprise services may communicate using standard mechanisms, can be described in a central repository, and are created and managed by tools provided by the application platform. The repository may be used to store all relevant pre-existing enterprise services and to make them available to selected partners and customers.
An invocation of a service or enterprise service typically involves the service's interaction and manipulation of data, specifically data in the form of business objects, stored within a repository or database, such as a enterprise service repository. The term business object when used in SOA represents a physical or logical object of significance to a business, such as a sales order. The description and creation of a business object may be accomplished through the use of meta-data. Meta-data is data that describes other data. For the most part, the creation of a business object using meta-data is done manually, and therefore, requires a great deal of time and resources.
In some systems meta-data is used to create only the shell (e.g., the look and layout) of the business object. As a result, the business object contains no real business logic. Generally, business logic refers to a set of methods or procedures used to manage a business function. For example, business logic may be used to check the transactional data of a business object before that transactional data is stored in a persistent database. In other words, business logic refers to the set of business-specific rules that help identify the structure and behavior of the business object, along with the pre- and post-conditions that must be met when a business object exposes its behavior to other objects in the system. Because in the above system the business object lacks any real business logic, a developer or user of the business object will have to manually create the business logic. Further, a developer will have to manually locate places within the business object that require business logic.
In other systems, there is some automatic generation of logic for a business object. However, in those systems the logic that is generated is limited to buffer logic. Buffer logic refers to methods and procedures used to manage the database access and the state handling of a business object. The buffer logic generated in these systems is generic buffer logic. Generic buffer logic refers to logic that allows database access and state handling operations to be performed in the same way irrespective of the business object that is involved. The development of business objects may be facilitated by centrally storing the generic buffer logic and allowing access to developers. However, as in the previously discussed system, this system would also require a developer to manually create the business logic that pertains to the business object and manually locate the places within the business object that require business logic.
Accordingly, there is a need to utilize meta-data, with little or no human interaction, to create not only the shell of a business object, but also a business object template for the implementation of the business object. This may be accomplished through the use of an adapter that utilizes business object meta-data previously stored in a repository of the enterprise. The business object template may provide a business object that is ready to run, with hooks indicating where business logic may be added. A developer may utilize these hooks to modify the business object in order to provide the additional business logic. Thus, the technical work of knowing wherein to add the business logic is provided by the adapter through the hooks of the business object template.